/**
 * Promise的对象方法： then
 */
//console.log(Object.getOwnPropertyDescriptors(Promise.prototype))
const promise = new Promise((resolve, reject) => {
  resolve('resolve msg...')
})
/**
 * 1. 同一个Promise可以被多次调用then方法
 */

// promise.then((res) => {
//   console.log(res)
// })
// promise.then((res) => {
//   console.log(res)
// })
// promise.then((res) => {
//   console.log(res)
// })

/**
 * then方法本身也是有返回值的，它的返回值是一个Promise
 * then方法传入的回调函数也可以有返回值
 *   ①如果返回一个普通值(数值、字符串、对象、undefined)
 *     那该值会作为一个新的Promise的resolve值
 *     没有返回值默认是undefined
 *   ②如果返回的是一个Promise
 *     相当于02中讲的是resolve(newPromise)，newPromise将决定状态
 *   ③如果返回的是一个对象，并实现thenable，一样的分析
 */

//1.then回调返回一个普通值
// promise
//   .then((res) => {
//     console.log(res) //resolve msg...
//     return { name: 'lo' }
//   })
//   .then((res) => {
//     console.log(res) //{ name: 'lo' }
//   })

//2.then回调返回一个Promise
const newPromise = new Promise((resolve, reject) => {
  resolve('newPromise resolve msg...')
})
promise
  .then((res) => {
    return newPromise
  })
  .then((res) => {
    console.log(res) //newPromise resolve msg...
  })
